package cn.bluethink.zentao.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 通用工具类
 * 
 * @title 苏州中科蓝迪公司所有(c)2016-2021
 * @version 0.1.0
 * @describe
 * @author liuxn
 * @date 2018年8月22日 1) liuxn于2018年8月22日创建V0.1初版本 2)
 *       fanbl于2018年11月22日增加getTimeInterval方法
 */
public class DateUtil {

	/**
	 * 根据日期（忽略年月日）比较大小
	 * 
	 * @param date
	 * @param newDate
	 * @return
	 */
	public static Integer dateCompare(Date date, Date newDate) {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");

		String dateFirst = dateFormat.format(date);
		String dateLast = dateFormat.format(newDate);

		int dateFirstIntVal = Integer.parseInt(dateFirst);
		int dateLastIntVal = Integer.parseInt(dateLast);

		if (dateFirstIntVal > dateLastIntVal) {
			return 1;
		} else if (dateFirstIntVal < dateLastIntVal) {
			return -1;
		}
		return 0;
	}

	/**
	 * 根据某一天计算这一星期的开始时间和结束
	 * 
	 * @param date
	 * @return
	 */
	public static Map<String, String> getTimeInterval(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		// 判断要计算的日期是否是周日，如果是则减一天计算周六的，否则会出问题，计算到下一周去了
		int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
		if (1 == dayWeek) {
			cal.add(Calendar.DAY_OF_MONTH, -1);
		}
		// System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期
		// 设置一个星期的第一天，按中国的习惯一个星期的第一天是星期一
		cal.setFirstDayOfWeek(Calendar.MONDAY);
		// 获得当前日期是一个星期的第几天
		int day = cal.get(Calendar.DAY_OF_WEEK);
		// 根据日历的规则，给当前日期减去星期几与一个星期第一天的差值
		cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
		String imptimeBegin = sdf.format(cal.getTime());
		// System.out.println("所在周星期一的日期：" + imptimeBegin);
		cal.add(Calendar.DATE, 6);
		String imptimeEnd = sdf.format(cal.getTime());
		// System.out.println("所在周星期日的日期：" + imptimeEnd);
		String weekBegin = imptimeBegin;
		String weekEnd = imptimeEnd;
		Map<String, String> map = new HashMap<String, String>();
		map.put("weekBegin", weekBegin);
		map.put("weekEnd", weekEnd);
		return map;
	}
}
